]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
keyboard: Handle touch events
authorCarlos Garnacho <carlosg@gnome.org>
Thu, 24 Jul 2014 16:24:56 +0000 (18:24 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Thu, 24 Jul 2014 16:44:14 +0000 (18:44 +0200)
Handle touch events, so that an interacted button locks to a single sequence,
but multiple sequences are free to interact with multiple key buttons.

https://bugzilla.gnome.org/show_bug.cgi?id=733633

js/ui/keyboard.js

index cfce8614238578082c545b2d97d455d918182da7..3805fb0b7c3acbcc8a4c5c0860d71e8eb8808ccf 100644 (file)
@@ -90,6 +90,25 @@ const Key = new Lang.Class({
                 key.release();
                 return Clutter.EVENT_PROPAGATE;
             }));
+        button.connect('touch-event', Lang.bind(this,
+            function (actor, event) {
+                let device = event.get_device();
+                let sequence = event.get_event_sequence();
+
+                if (!this._touchPressed &&
+                    event.type() == Clutter.EventType.TOUCH_BEGIN) {
+                    device.sequence_grab(sequence, actor);
+                    this._touchPressed = true;
+                    key.press();
+                } else if (this._touchPressed &&
+                           event.type() == Clutter.EventType.TOUCH_END &&
+                           device.sequence_get_grabbed_actor(sequence) == actor) {
+                    device.sequence_ungrab(sequence);
+                    this._touchPressed = false;
+                    key.release();
+                }
+                return Clutter.EVENT_PROPAGATE;
+            }));
 
         return button;
     },